package cn.fang2chen.java.distributed.lock.framework.redis;

/**
 * 规定 Redis 的接口
 *
 * @author dcmini chen
 * @since 1.0.0
 */
public interface RedisClient {

    /**
     * 实现 SET lock_key random_value NX PX 5000
     */
    boolean setNxPx(String key, String value, long expired);

    /**
     * LUA脚本 实现 CAS 操作 删除 记录
     */
    boolean delCas(String key, String expect);

    /**
     * 是否有某个主键
     */
    boolean hasValue(String key);

    /**
     * 获取到某个值
     */
    String getValue(String key);

    /**
     * 剩余的有效时间
     */
    long timeRemaining(String key);
}
